#pragma once

#include "iostream"
#include "vector"
#include "algorithm"

using namespace std;
/*HJJ QQ479287006
 *一个长度为n-1的递增排序数组中的所有数字都是唯一的，并且每个数字都在范围0～n-1之内。在范围0～n-1内的n个数字中有且只有一个数字不在该数组中，请找出这个数字。

 

示例 1:

输入: [0,1,3]
输出: 2
示例 2:

输入: [0,1,2,3,4,5,6,7,9]
输出: 8
2 3 4 5 6 7 8
来源：力扣（LeetCode）
链接：https://leetcode.cn/problems/que-shi-de-shu-zi-lcof
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * */
//这个题抄别人的  TODO 本来以为很简单的

/**
 *
 * 其实这个又一点 如果 mid =索引值那么 前面的肯定都是归位了 否则都不等于索引
 * 例如 1 2 3    此时数组0对应的是1  2对应的3
 * 挺神奇的吧 反正是
 * */
int missingNumber(vector<int> &nums) {

    int low = 0;
    int high = nums.size() - 1;
    while (low <= high) {
        int mid = low + (high - low) / 2;

        if (nums[mid] == mid) {
            low = mid + 1;
        } else {
            high = mid - 1;
        }


    }


    return low;
}